package poo.figureSolide;

import poo.geometria.Disco;

public class Cono extends Disco implements FiguraSolida {

	private double altezza;

	public Cono(Disco d, double altezza) {
		super(d);
		if (altezza <= 0)
			throw new IllegalArgumentException();
		this.altezza = altezza;
	}

	public Cono(double raggio, double altezza) {
		super(raggio);
		if (altezza <= 0)
			throw new IllegalArgumentException();
		this.altezza = altezza;
	}

	public Cono(double x, double y, double raggio, double altezza) {
		super(x, y, raggio);
		if (altezza <= 0)
			throw new IllegalArgumentException();
		this.altezza = altezza;
	}

	public double area() {
		double apotema = Math.sqrt(getRaggio() * getRaggio()
				+ (altezza * altezza));
		return Math.PI * getRaggio() * (getRaggio() + apotema);
	}

	public double perimetro() {
		throw new UnsupportedOperationException();
	}

	@Override
	public double areaTotale() {
		return area();
	}

	@Override
	public double areaLaterale() {
		throw new UnsupportedOperationException();
	}

	@Override
	public double areaDiBase() {
		return super.area();
	}

	@Override
	public double volume() {
		return (Math.PI * getRaggio() * getRaggio() * altezza) / 3;
	}

	public String toString() {
		return "Cono " + super.toString();
	}
}
